IMP/EXP,数据泵,SQL*Loader ,rman,oracle数据库备份

您所在的位置:网站首页 oracle sql developer导出数据 IMP/EXP,数据泵,SQL*Loader ,rman,oracle数据库备份

IMP/EXP,数据泵,SQL*Loader ,rman,oracle数据库备份

2023-03-19 09:42| 来源: 网络整理| 查看: 265

系统运维

IMP/EXP,数据泵,SQL*Loader ,rman

数据库的逻辑备份和恢复:exp和imp1.导库:导出和导入整个数据库2.导表空间:导出和导入表空间3.导表用户:导出和导入用户中所有对象4.导表:导出和导入表或表分区

(1)commit=y 插入并提交,频繁提交会影响数据库效率。提交数据库过大时可以添加。(2)ignore=y/n 该参数表示忽略创建错误,并继续执行。(3)full=y 是否完全导入。

1.导出导入表备份测试表:create tables emp_test as select * from emp_test;

exp导出数据库表:exp scott/123456@orcl file=/oracle/bak_oracle/emp_test.dmp tables="emp_test"按条件进行选择性导出exp scott/[email protected]:1521/orcl file=/oracle/bak_oracle/emp_test.dmp tables="emp_test" query=\\\\"where sal between \\\’1000\\\’ and \\\’2000\\\’\\\\" log=/oracle/bak_oracle/emp_test.log 用有权限用户导出不同用户的不同表exp \\\\\\\’sys/syste as sysdba\\\\\\\’ file=/oracle/bak_oracle/emp_test.dmp tables="scott.emp_test,test.tab_test"

注:oracle用户登录并且配置了TNSNAME可以直接scott/123456不是本机备份scott/[email protected]:1521/orcl

删除测试表drop table emp_test ;参数purge

imp导入数据库表:查询该用户存放数据的缺省表空间:select username,default_tablespace from dba_users where username = \\\’SCOTT\\\’;在特殊情况下有些用户的数据需要放到特殊的表空间中,使用如下的命令进行修改。修改该用户存放数据的缺省表空间:alter user scott default tablespace XXX;imp scott/123456 file=/oracle/bak_oracle/emp_test.dmp 用有权限用户导出不同用户的不同表导入到一个用户表中imp \\\\\\\’sys/system as sysdba\\\\\\\’ file=/oracle/bak_oracle/emp_test.dmp fromuser=scott;

查询表是否删除和导入成功select count(*) from emp_test;

2.导出导入用户导出一个用户下面的数据exp scott/123456 file=/oracle/bak_oracle/scott.dmp owner=scott;删除一个用户SQL> drop user scott cascade;drop user scott cascade*ERROR at line 1:ORA-01940: cannot drop a user that is currently connected(1)查看是否有SQL语句在占用这张表select sess.INST_ID, sess.machine,sess.program, sess.sql_id,sess.sid, sess.serial#,sess.PROCESSlo.oracle_username, lo.os_user_name,lo.locked_mode,ao.object_name, ao.object_type,ao.status,from gv$locked_object lo, dba_objects ao, gv$session sesswhere ao.object_id = lo.object_idand lo.session_id = sess.sidand sess.username = \\\’SCOTT\\\’–杀掉进程 sid,serial#alter system kill session\\\’10,11562\\\’;

(2)查看是否有会话没有结束SQL> select username,sid,serial#,paddr,status from v$session where username=\\\’SCOTT\\\’;USERNAME SID SERIAL# PADDR STATUS

SCOTT 1 281 000000008E51C510 KILLEDSCOTT 20 362 000000008E491150 INACTIVESCOTT 21 175 000000008E48D050 INACTIVESCOTT 28 169 000000008E51C510 KILLED

SQL> select PROGRAM from v$process where addr=\\\’000000008E490110\\\’;[email protected]

–杀掉进程 sid,serial#alter system kill session \\\’1,281\\\’;alter system kill session \\\’20,362\\\’;alter system kill session \\\’21,175\\\’;alter system kill session \\\’28,169\\\’;SQL> drop user scott cascade;User dropped.导入一个用户下面的数据先授权(连接数据库和DBA的权限)再导入(用户SCOTT下面的所有表)grant connect,resource to scott identified by 123456;grant dba to scott;imp scott/123456 file=/oracle/bak_oracle/scott.dmp full=y;

用有权限的用户导入表给用户imp \\\’sys/[email protected]:1521/orcl as sysdba\\\’ file=/oracle/bak_oracle/scott.dmp fromuser=scott touser=scott注:touser=可以给不同的用户

3.导入导出表空间

—未完待续

需要备份的数据量大时建议选择数据泵数据库的逻辑备份和恢复:expdp和impdp数据泵只能在数据库的服务器端使用在服务器上面创建目录,用于导入导出时存放数据create directory DATA_BAK as \\\’/oracle\\\’;为目录授权用户读和写的权限grant read,write on directory DATA_BAK to TEST;查看目录和拥有者、路径select * from dba_directories

expdp 用户名/密码@IP/网络服务名 schemas=用户名 directory=创建的目录 dumpfile=数据表名.dmp logfile=数据表名.log expdp test/[email protected]:1521/orcl schemas=\\\’TEST\\\’ directory=\\\’DATA_BAK\\\’ dumpfile=/oracle/xxx.dmp logfile=/oracle/xxx.log schemas:用户名,directory:创建的存放数据的目录,dumpfile:将要导出的数据库备份dmp文件,logfile:存放导出日志文件,compression:导出时对文件进行压缩

用脚本文件导出数据库文件:[oracle@master oracle]$ cat aa.par userid=" test/test"#userid=" / as sysdba" 用dba导出directory=DATA_BAKdumpfile=emp_test2.dmplogfile=emp_test2.log#parallel=5compression=all#nologfile=noschemas=testjob_name=emp_test2_expdp使用命令调用:nohup expdp parfile=aa.par &

用命令导出数据库文件:expdp test/[email protected]/orcl directory=DATA_BAK dumpfile=emp_test2.dmp logfile=emp_test2.log schemas=test

数据泵导入数据库语句:impdp test/[email protected]:1521/orcl REMAP_SCHEMA = test:test table_exists_action = replace directory=DATA_BAK dumpfile=emp_test2.dmp logfile=emp_test2.log

数据库的批量导入:SQL*Loader 连接用户查看表结构

?控制文件:[oracle@master oracle]$ cat EMP_LOADERTEST2.ctlLOAD DATAINFILE \\\’/oracle/EMP_LOADERTEST2.ctl \\\’TRUNCATE INTO TABLE EMP_LOADERTEST2FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY \\\’"\\\’ (EMPNO,ENAME,JOB)数据文件:[oracle@master oracle]$ cat EMP_LOADERTEST2.dat11,a1,1,11,22,33,44,5511,a2,2,11,22,33,44,5511,a3,2,11,22,33,44,5511,a4,3,11,22,33,44,55导入时,数据文件中的数据,需要和控制文件中相对应需要导入的表中的字段类型需要一致sqlldr test/test control=/oracle/EMP_LOADERTEST2.ctl data=EMP_LOADERTEST2.dat

产生了sqlldr的日志文件

查看日志文件中数据库导入的情况

检查表中是否有数据

扩展表空间

系统表空间会自动扩大,如果系统表空间莫名其妙的大1.查询审计功能是否开着,审计表内数据大影响的查看审计功能是否打开show parameter audit;2.关闭审计功能命令SQL> alter system set audit_sys_operations=FALSE scope=spfile;System altered.SQL> alter system set audit_trail=NONE scope=spfile;System altered.重启数据库生效

注:audit_sys_operations的参数设置:none 禁用数据库审计os 启用数据库审计,并将数据库审计记录定向到操作系统审计记录db 启用数据库审计,并将数据库所有审计记录定向到数据库的SYS.AUD$表xml 启用数据库审计,并将所有记录写到XML格式的操作系统文件中。xml,extended 启用数据库审计,输出审计记录的所有列,包括SqlText和SqlBind的值。

3.查询统计信息是否过多统计信息时间默认为31天,时间可以修改为10天或一周,过期的统计信息系统自动删除SQL> select dbms_stats.get_stats_history_retention from dual; SQL> conn / as sysdba Connected.SQL> exec dbms_stats.alter_stats_history_retention(10);

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码官网:www.west.cn



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3